package com.plian.system.mapper.fr.bank;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.plian.system.entity.fr.bank.BankAccountInfo;
import com.plian.system.vo.fr.bank.BankAccountInfoVO;
import com.plian.system.vo.fr.bank.DepositStatisticsVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 银行账户信息表 Mapper 接口
 *
 * @author gangan
 * @since 2019-09-27
 */
public interface BankAccountInfoMapper extends BaseMapper<BankAccountInfo> {
    /**
     * 按集团id合计
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> statisticsByTopId(@Param("topGroupIds") List<String> topGroupIds);

    /**
     * 按集团id合计公司数
     * @param date
     * @param topGroupIds
     * @param depositTypes
     * @return
     */
    List<DepositStatisticsVO> getCompanyNumber(@Param("date") String date,
                                               @Param("topGroupIds") List<String> topGroupIds,
                                               @Param("depositTypes") List<Integer> depositTypes);

    /**
     * 用于定期存款汇总表
     * @param bankAccountInfo
     * @return
     */
    List<BankAccountInfoVO> summaryList(@Param("bankAccountInfo") BankAccountInfo bankAccountInfo);

    /**
     * 按集团id和银行合计公司数
     * @param date
     * @param topGroupIds
     * @param bankCodes
     * @return
     */
    List<DepositStatisticsVO> getCompanyNumberByBank(@Param("date") String date,
                                                     @Param("topGroupIds") List<String> topGroupIds,
                                                     @Param("bankCodes") List<String> bankCodes);

    /**
     * 按集团id和银行合计账户数
     * @param date
     * @param topGroupIds
     * @param bankCodes
     * @return
     */
    List<DepositStatisticsVO> getAccountNumberByBank(@Param("date") String date,
                                                     @Param("topGroupIds") List<String> topGroupIds,
                                                     @Param("bankCodes") List<String> bankCodes);

    /**
     * 按集团id和银行合计活期
     * @param topGroupIds
     * @param bankCodes
     * @return
     */
    List<DepositStatisticsVO> statisticsByTopIdAndBank(@Param("topGroupIds") List<String> topGroupIds,@Param("bankCodes") List<String> bankCodes);


    /**
     * 查询账户总数量
     */
    List<BankAccountInfoVO> getAllAccountNumberByOrgId(@Param("allOrgIds") List allOrgIds);

    /**
     * 查询专户数量
     */
    List<BankAccountInfoVO> getSpecialAccountNumberByOrgId(@Param("allOrgIds") List allOrgIds);

    /**
     * 查询非融资非专户数量
     */
    List<BankAccountInfoVO> getAccountNumberByOrgId(@Param("allOrgIds") List allOrgIds);

    /**
     *60天内无流水的活期+定期
     */
    List<BankAccountInfoVO> account(@Param("allOrgIds") List allOrgIds);

    /**
     *账户其他信息
     */
    List<BankAccountInfoVO> accountInfo(@Param("bankAccounts") List bankAccounts);

}
